﻿// Copyright (C) 2010-2012, MaGUI
//
//  Elena Ballesteros Molinero
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

using System.Drawing;
using System.ComponentModel;
using System;

namespace Magui
{
    public class PublicSettings
    {
        public int Contenedor;

        /// <summary>
        /// Factor de ampliación
        /// </summary>
        public double Factor;

        /// <summary>
        /// Magnificado encencido/apagado
        /// </summary>
        public bool On;

        #region Opciones del raton
        
        public int MouseGuideColor;

        /// <summary>
        /// Tipo de guías del ratón
        ///     () 
        /// </summary>
        public int MouseGuideKind;

        public int MouseGuideThicknes;

        /// <summary>
        /// Guías del ratón
        /// </summary>
        public bool MouseGuides;

        /// <summary>
        /// Tamaño del puntero del ratón
        ///     () Normal
        ///     () Grande
        ///     () Muy grande
        /// </summary>
        public int MouseSize;

        #endregion

        #region Seguimiento
        public bool FocusTracking;
        #endregion

        #region Área de magnificación

        public bool MagnificationCentered;
        public double MagnificationInMarginPercent;
        #endregion

        public bool ActiveWindow;
        public bool Antialias;
        public bool InverseColor;          

        public void GetPublicSettings()
        {
            On = Magnificador.Instance.Activo;
            Factor = Magnificador.Instance.Factor;
            if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContPantallaCompleta)))
                Contenedor = 1;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContLineaHorizontal)))
                Contenedor = 2;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContLupa)))
                Contenedor = 3;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContMitadSuperiorFija)))
                Contenedor = 4;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContMitadInferiorFija)))
                Contenedor = 5;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContMitadDchaFija)))
                Contenedor = 6;
            else if (Magnificador.Instance.Contenedor.GetType().Equals(typeof(ContMitadIzdaFija)))
                Contenedor = 7;

            Antialias = Magnificador.Instance.Alisado;
            InverseColor = Magnificador.Instance.InverseColor;
            ActiveWindow = Magnificador.Instance.Pointer.RestringirMovimiento;
            FocusTracking = Magnificador.Instance.Focus.Seguimiento;

            MagnificationCentered = Magnificador.Instance.Pointer.AlineaCentrado;
            MagnificationInMarginPercent = Magnificador.Instance.Pointer.AlineaMargenes;

            MouseSize = (int)Magnificador.Instance.Pointer.Tamanyo;
            MouseGuides = Magnificador.Instance.Pointer.Localizador.Activo;
            MouseGuideKind = Magnificador.Instance.Pointer.Localizador.Tipo;
            MouseGuideColor = Magnificador.Instance.Pointer.Localizador.Borde.Color.ToArgb();
            MouseGuideThicknes = (int)Magnificador.Instance.Pointer.Localizador.Borde.Grosor;
        }

        public void SetPublicSettings()
        {
            
            Magnificador.Instance.Activo = On;
            Magnificador.Instance.Factor = Factor;

            switch (Contenedor)
            {
                case 1:
                    Magnificador.Instance.Contenedor = new ContPantallaCompleta();
                    break;
                case 2:
                    Magnificador.Instance.Contenedor = new ContLineaHorizontal();
                    break;
                case 3:
                    Magnificador.Instance.Contenedor = new ContLupa();
                    break;
                case 4:
                    Magnificador.Instance.Contenedor = new ContMitadSuperiorFija();
                    break;
                case 5:
                    Magnificador.Instance.Contenedor = new ContMitadInferiorFija();
                    break;
                case 6:
                    Magnificador.Instance.Contenedor = new ContMitadDchaFija();
                    break;
                case 7:
                    Magnificador.Instance.Contenedor = new ContMitadIzdaFija();
                    break;
            }

            Magnificador.Instance.InverseColor = InverseColor;
            Magnificador.Instance.Alisado = Antialias;
            Magnificador.Instance.Pointer.RestringirMovimiento = ActiveWindow;
            Magnificador.Instance.Focus.Seguimiento = FocusTracking;

            Magnificador.Instance.Pointer.AlineaCentrado = MagnificationCentered;
            Magnificador.Instance.Pointer.AlineaMargenes = MagnificationInMarginPercent;


            Magnificador.Instance.Pointer.Tamanyo = (Pointer.Tam)MouseSize;
            Magnificador.Instance.Pointer.Localizador.Activo = MouseGuides;
            Magnificador.Instance.Pointer.Localizador.Tipo = MouseGuideKind;
            Magnificador.Instance.Pointer.Localizador.Borde.Color = Color.FromArgb(MouseGuideColor);
            Magnificador.Instance.Pointer.Localizador.Borde.Grosor = (Borde.Gros) MouseGuideThicknes; // Guardamos el índice real
        }             
    }
}